home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.48
/
palette
/
palette_os2.p
< prev
next >
Wrap
Text File
|
1995-06-23
|
3KB
|
130 lines
PROGRAM palettedemo1;
{ Gadtools-Palette OS2.x revision for RogerSoft`s Demo
(c) by PackMAN 19.6.95
wichtig: man sollte immer die TextAttribute für Gadtools-Gadgets
übergeben, dieses fehlt bei RogerSoft, unter OS2 wird
sonst kein Gaget initialisiert...
Unterschiede zu OS3.x Variante:
- Indicatoren anders aufgebaut (siehe Screen-Shots)
- unter OS2.x muß für die Tastaturunterstützung mangels
GT_GetGadgetAttrs eine Hilfvariable mitgeschleppt werden...}
USES gadtools;
VAR win : p_window;
t : Array[1..15] OF TagItem;
di : p_drawinfo;
vi : PTR;
msg : p_intuimessage;
ng : newgadget;
gad : p_gadget;
glist : p_gadget;
pgad : p_gadget;
aktgad: p_gadget;
pscr : p_screen;
ende : BOOLEAN;
farbanzahl : LONG; { Anzahl der Farben }
num : INTEGER; { aktuelle Farbnummer / angesprochene Hilfsvariable}
txattr: TextAttr;
FUNCTION OS2:BOOLEAN;
VAR lib:p_library;
BEGIN
lib:=sysbase;
os2:=(lib^.lib_version>=37);
END;
PROCEDURE oberflaeche;
BEGIN
num:=0;
t[1]:=tagItem(GT_underscore,ORD('_'));
t[2]:=TagItem(GTPA_depth,di^.dri_depth); { Anzahl der Bitplanes }
t[3]:=TagItem(GTPA_Indicatorheight,30); { Höhe+Breite des Indicatorfeldes,}
t[4]:=TagItem(GTPA_Indicatorwidth,30); { welches die Farbe anzeigt. Ab OS3.0 egal}
t[5]:=TagItem(GTPA_Color,num); { Aktuelle Farbe }
t[6].ti_tag:=Tag_Done;
ng:=newgadget(100,35,200,150,'_Palette',^txAttr,1,Placetext_left,vi,NIL);
gad:=CreateGadgetA(PALETTE_KIND,pgad,^ng,^t);
t[1]:=TagItem(WA_InnerWidth,400);
t[2]:=TagItem(WA_InnerHeight,180);
t[3].ti_Tag:=WA_Title;
t[3].ti_data:='PALETTE_KIND DEMO OS2.x 19.06.95 by PackMAN';
t[4]:=TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_RAWKEY);
t[5]:=TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_DRAGBAR+WFLG_ACTIVATE+
WFLG_DEPTHGADGET+WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH);
t[6]:=TagItem(WA_Left,75);
t[7]:=TagItem(WA_Top,30);
t[8]:=TagItem(WA_Gadgets,LONG(glist));
t[9].ti_Tag:=TAG_DONE;
win:=OpenWindowTaglist(NIL,^t);
IF win=NIL THEN exit;
GT_Refreshwindow(Win,NIL);
END;
BEGIN
IF NOT OS2 THEN exit;
ende:=FALSE;
pscr:=lockpubScreen('Workbench');
di:=NIL;
di:=getscreendrawinfo(pscr);
IF (di=NIL) THEN exit;
freescreendrawinfo(pscr,di);
vi:=NIL;
vi:=GetVisualInfoA(pscr,NIL);
unLockPubScreen(NIL,pscr);
Glist:=NIL;
pgad:=CreateContext(^Glist);
IF (pgad=NIL) OR (vi=NIL) THEN exit;
txattr:=TextAttr('topaz.font',8,0,0);
farbanzahl:=1;
FOR num:=1 TO di^.dri_depth DO farbanzahl:=farbanzahl*2;
oberflaeche;
REPEAT
msg:=Wait_Port(win^.UserPort);
msg:=GT_getImsg(win^.userport);
GT_ReplyImsg(msg);
CASE msg^.Class OF
IDCMP_GadgetUP:
BEGIN
aktgad:=msg^.iaddress;
CASE aktgad^.gadgetID OF
1: num:=Msg^.Code;
ELSE END;
END;
IDCMP_RAWKEY:
BEGIN
CASE msg^.code OF
{p} 25: BEGIN
IF num<farbanzahl-1 THEN inc(num) ELSE num:=0;
t[1]:=TagItem(GTPA_Color,num);
t[2].ti_tag:=Tag_Done;
GT_SetGadgetAttrsA(gad,win,NIL,^t);
END;
$45: ende:=true;
ELSE END;
END;
IDCMP_CLOSEWINDOW: ende:=TRUE;
ELSE END; {OF CASE }
UNTIL ende;
Closewindow(win);
Freegadgets(glist);
Freevisualinfo(vi);
END.